+2007-06-22 Emmanuele Bassi <ebassi@gnome.org>
+
+ * gtk/gtksearchenginebeagle.c:
+ * gtk/gtksearchenginesimple.c:
+ * gtk/gtksearchenginetracker.c: Remove the MIME type calls and
+ queries from the search engine implementations, since we use our
+ own GtkFileSystem to filter out basing on MIME types and we cannot
+ query MIME types anyway. The GtkQuery private object still has
+ MIME type, as well as location, support for future expansion.
+
Fri Jun 22 12:13:39 2007 Tim Janik <timj@imendio.com>
* gtk/gtkframe.c (gtk_frame_paint): applied patch from Xan Lopez
#include <config.h>
#include <gmodule.h>
#include "gtksearchenginebeagle.h"
+
#if 0
#include <beagle/beagle.h>
#endif
} BeaglePropertyType;
/* *static* wrapper function pointers */
-static gboolean (*beagle_client_send_request_async) (BeagleClient *client,
+static gboolean (*beagle_client_send_request_async) (BeagleClient *client,
BeagleRequest *request,
GError **err) = NULL;
static G_CONST_RETURN char *(*beagle_hit_get_uri) (BeagleHit *hit) = NULL;
const char *str) = NULL;
static void (*beagle_query_add_hit_type) (BeagleQuery *query,
const char *hit_type) = NULL;
-static void (*beagle_query_add_mime_type) (BeagleQuery *query,
- const char *mime_type) = NULL;
static void (*beagle_query_set_max_hits) (BeagleQuery *query,
gint max_hits) = NULL;
static BeagleQueryPartProperty *(*beagle_query_part_property_new) (void) = NULL;
MAP (beagle_query_new),
MAP (beagle_query_add_text),
MAP (beagle_query_add_hit_type),
- MAP (beagle_query_add_mime_type),
MAP (beagle_query_set_max_hits),
MAP (beagle_query_part_property_new),
MAP (beagle_query_part_set_logic),
{
GtkSearchEngineBeagle *beagle;
GError *error;
- GList *mimetypes, *l;
- gchar *text, *mimetype;
+ gchar *text;
error = NULL;
beagle = GTK_SEARCH_ENGINE_BEAGLE (engine);
"error", G_CALLBACK (beagle_error), engine);
/* We only want files */
- beagle_query_add_hit_type (beagle->priv->current_query,
- "File");
- beagle_query_set_max_hits (beagle->priv->current_query,
- 1000);
+ beagle_query_add_hit_type (beagle->priv->current_query, "File");
+ beagle_query_set_max_hits (beagle->priv->current_query, 1000);
text = _gtk_query_get_text (beagle->priv->query);
- beagle_query_add_text (beagle->priv->current_query,
- text);
+ beagle_query_add_text (beagle->priv->current_query, text);
- mimetypes = _gtk_query_get_mime_types (beagle->priv->query);
- for (l = mimetypes; l != NULL; l = l->next)
- {
- mimetype = l->data;
- beagle_query_add_mime_type (beagle->priv->current_query, mimetype);
- }
-
beagle->priv->current_query_uri_prefix = _gtk_query_get_location (beagle->priv->query);
if (!beagle_client_send_request_async (beagle->priv->client,
/* These must live during the lifetime of the query */
g_free (text);
- g_list_foreach (mimetypes, (GFunc)g_free, NULL);
- g_list_free (mimetypes);
}
static void
{
g_object_unref (beagle->priv->current_query);
beagle->priv->current_query = NULL;
+
g_free (beagle->priv->current_query_uri_prefix);
beagle->priv->current_query_uri_prefix = NULL;
}
#include "gtksearchenginesimple.h"
-#define XDG_PREFIX _gtk_xdg
-#include "xdgmime/xdgmime.h"
-
#include <string.h>
#include <glib/gstrfuncs.h>
GtkSearchEngineSimple *engine;
gchar *path;
- GList *mime_types;
gchar **words;
GList *found_list;
g_free (text);
g_free (lower);
- data->mime_types = _gtk_query_get_mime_types (query);
-
return data;
}
{
g_free (data->path);
g_strfreev (data->words);
- g_list_foreach (data->mime_types, (GFunc)g_free, NULL);
- g_list_free (data->mime_types);
g_free (data);
}
SearchThreadData *data;
gint i;
const gchar *name;
- gchar *lower_name, *mime_type;
+ gchar *lower_name;
gchar *uri;
gboolean hit;
GList *l;
g_free (lower_name);
}
- if (hit && data->mime_types != NULL)
- {
- hit = FALSE;
- mime_type = xdg_mime_get_mime_type_for_file (fpath, (struct stat *)sb);
- for (l = data->mime_types; l != NULL; l = l->next)
- {
- if (strcmp (mime_type, l->data) == 0)
- {
- hit = TRUE;
- break;
- }
- }
-
- g_free (mime_type);
- }
-
if (hit)
{
uri = g_filename_to_uri (fpath, NULL, NULL);
#include <tracker.h>
#endif
+/* we dlopen() libtracker at runtime */
+
typedef struct _TrackerClient TrackerClient;
typedef void (*TrackerArrayReply) (char **result, GError *error, gpointer user_data);
const char *query,
TrackerArrayReply callback,
gpointer user_data) = NULL;
-static void (*tracker_search_metadata_by_text_and_mime_async) (TrackerClient *client,
- const char *query,
- const char **mimes,
- TrackerArrayReply callback,
- gpointer user_data) = NULL;
static void (*tracker_search_metadata_by_text_and_location_async) (TrackerClient *client,
const char *query,
const char *location,
TrackerArrayReply callback,
gpointer user_data) = NULL;
-static void (*tracker_search_metadata_by_text_and_mime_and_location_async) (TrackerClient *client,
- const char *query,
- const char **mimes,
- const char *location,
- TrackerArrayReply callback,
- gpointer user_data) = NULL;
static struct TrackerDlMapping
{
MAP (tracker_disconnect),
MAP (tracker_cancel_last_call),
MAP (tracker_search_metadata_by_text_async),
- MAP (tracker_search_metadata_by_text_and_mime_async),
MAP (tracker_search_metadata_by_text_and_location_async),
- MAP (tracker_search_metadata_by_text_and_mime_and_location_async)
#undef MAP
};
{
gchar *uri;
- uri = g_filename_to_uri ((char *)*results_p, NULL, NULL);
+ uri = g_filename_to_uri (*results_p, NULL, NULL);
if (uri)
- hit_uris = g_list_prepend (hit_uris, (char *)uri);
+ hit_uris = g_list_prepend (hit_uris, uri);
}
_gtk_search_engine_hits_added (GTK_SEARCH_ENGINE (tracker), hit_uris);
gtk_search_engine_tracker_start (GtkSearchEngine *engine)
{
GtkSearchEngineTracker *tracker;
- GList *mimetypes, *l;
- gchar *search_text, *location, *location_uri;
- gchar **mimes;
- gint i, mime_count;
+ gchar *search_text, *location, *location_uri;
tracker = GTK_SEARCH_ENGINE_TRACKER (engine);
return;
search_text = _gtk_query_get_text (tracker->priv->query);
-
- mimetypes = _gtk_query_get_mime_types (tracker->priv->query);
-
location_uri = _gtk_query_get_location (tracker->priv->query);
-
+
+ location = NULL;
if (location_uri)
{
location = g_filename_from_uri (location_uri, NULL, NULL);
g_free (location_uri);
}
- else
- {
- location = NULL;
- }
-
- mime_count = g_list_length (mimetypes);
- i = 0;
-
- /* convert list into array */
- if (mime_count > 0)
+ if (location)
{
- mimes = g_new (gchar *, (mime_count + 1));
-
- for (l = mimetypes; l != NULL; l = l->next)
- {
- mimes[i] = g_strdup (l->data);
- i++;
- }
-
- mimes[mime_count] = NULL;
-
- if (location)
- {
- tracker_search_metadata_by_text_and_mime_and_location_async (tracker->priv->client,
- search_text, (const char **)mimes, location,
- search_callback,
- tracker);
- g_free (location);
- }
- else
- {
- tracker_search_metadata_by_text_and_mime_async (tracker->priv->client,
- search_text, (const char**)mimes,
- search_callback,
- tracker);
- }
-
- g_strfreev (mimes);
-
-
+ tracker_search_metadata_by_text_and_location_async (tracker->priv->client,
+ search_text,
+ location,
+ search_callback,
+ tracker);
+ g_free (location);
}
else
{
- if (location)
- {
- tracker_search_metadata_by_text_and_location_async (tracker->priv->client,
- search_text,
- location,
- search_callback,
- tracker);
- g_free (location);
- }
- else
- {
- tracker_search_metadata_by_text_async (tracker->priv->client,
- search_text,
- search_callback,
- tracker);
- }
+ tracker_search_metadata_by_text_async (tracker->priv->client,
+ search_text,
+ search_callback,
+ tracker);
}
tracker->priv->query_pending = TRUE;
g_free (search_text);
- g_list_foreach (mimetypes, (GFunc)g_free, NULL);
- g_list_free (mimetypes);
}
static void
engine = g_object_new (GTK_TYPE_SEARCH_ENGINE_TRACKER, NULL);
engine->priv->client = tracker_client;
-
engine->priv->query_pending = FALSE;
return GTK_SEARCH_ENGINE (engine);